import request from '@/utils/request'
const { baseURL } = request.defaults

export const userApi = {
  // 微信登录
  wxLogin(data) {
    return request({
      url: '/api/wx/login',
      method: 'POST',
      data
    })
  },
  
  // 手机号验证码登录
  async login(data) {
    const res = await request({
      url: '/api/user/login',
      method: 'POST',
      data
    })
    
    if (res.code === 200) {
      // 保存用户信息到本地存储
      uni.setStorageSync('userInfo', res.data)
    }
    
    return res
  },
  
  // 注册账号
  register(data) {
    return request({
      url: '/api/user/register',
      method: 'POST',
      data
    })
  },
  
  // 发送验证码
  sendCode(phone) {
    return request({
      url: '/api/user/send-code',
      method: 'POST',
      data: { phone }
    })
  },
  
  // 获取用户信息
  getUserInfo() {
    return request({
      url: '/api/user/info',
      method: 'GET'
    })
  },

  // 退出登录
  logout() {
    return request({
      url: '/api/user/logout',
      method: 'POST'
    })
  },

  // 更新用户信息
  updateUserInfo(data) {
    return request({
      url: '/api/user/info',
      method: 'PUT',
      data
    }).then(res => {
      if (res.code === 200) {
        // 更新成功后，更新本地存储的用户信息
        const userInfo = uni.getStorageSync('userInfo')
        uni.setStorageSync('userInfo', { ...userInfo, ...data })
      }
      return res
    })
  },

  // 上传头像
  uploadAvatar(filePath) {
    return new Promise((resolve, reject) => {
      uni.uploadFile({
        url: baseURL + '/api/user/upload-avatar',
        filePath: filePath,
        name: 'file',
        header: {
          'Content-Type': 'multipart/form-data',
          'Authorization': uni.getStorageSync('token') ? `Bearer ${uni.getStorageSync('token')}` : ''
        },
        success: (res) => {
          try {
            const data = JSON.parse(res.data)
            if (data.code === 200) {
              // 直接返回图片URL
              resolve(data.data)
            } else {
              reject(new Error(data.errorMessage || '上传失败'))
            }
          } catch (e) {
            reject(new Error('服务器响应格式错误'))
          }
        },
        fail: (err) => {
          console.error('上传失败:', err)
          reject(new Error('网络请求失败'))
        }
      })
    })
  }
} 